آموزش جاوا اسکريپ

آموزش جاوا اسکريپ

مقدمه

جاوااسکريپت چيست؟

قبل از هر چيز بايد به اطلاع شما برسانم که براي يادگيري جاوااسکريپت، شما نياز به دانستن زبان HTML و درک کاملي از طراحي و ساخت صفحات وب بايد داشته باشيد چون جاوااسکريپت يک زبان مجزا از اچ تي ام ال نيست و بايد همراه با کدهاي HTML در يک صفحه بکار رود تا کارآيي داشته باشد.
با اين توضيح مي پردازيم به ادامه مطلب، همانطور که مي دانيد زبان اچ تي ام ال به تنهايي جوابگوي نياز بينندگان وب سايتها نمي باشد چون آنها علاقه خاصي به جذابيتها و ارتباط متقابل ميان خود و صفحات وب دارند که اچ تي ام ال نمي تواند جذابيت قابل توجهي به يک صفحه بدهد و يا با يک کاربر ارتباط برقرار کند. پس براي برطرف کردن اين مشکلات، صفحات وب نيازمند يک زبان قوي تر مي باشد که به همين منظور زبان جاوااسکريپت خلق شد.

جاوااسکريپت توسط شرکت Netscape اختراع شد و به عنوان اولين زبان اسکريپت نويسي در وب توسعه يافت که در حال حاضر پرکاربردترين و محبوب ترين زبان اسکريپت نويسي در دنيا مي باشد که يکي از دلايل آن، پشتيباني دو مرورگر معروف وب، Internet Explorer و Netscape Navigator از اين زبان مي باشد. نا گفته نماند که شرکت مايکروسافت هم براي اينکه از نت اسکيپ در اين زمينه عقب نماند، نسخه مربوط به خود را بنام Jscript توليد کرد.

 

تفاوت جاوااسکريپت با جاوا

تقريباً در هر جا که آموزش جاوااسکريپت هست اين مطلب هم مشاهده مي شود چون خيلي ها فکر مي کنند که اين دو با هم يکي بوده يا حداقل اينکه جاوااسکريپت ساده شده زبان جاوا براي کاربرد در وب مي باشد که اصلاً اين چنين نيست.

همانطور که ميدانيد جاوااسکريپت متعلق به شرکت نت اسکيپ مي باشد اما زبان جاوا متعلق به شرکت Sun Microsystems است. جاوااسکريپت در اصل يک زبان اسکريپت نويسي است نه يک زبان برنامه نويسي کامپيوتر، شايد بتوان اسکريپتها را يک نوع زبان برنامه نويسي خيلي سبک و ساده ناميد اما جاوا يک زبان برنامه نويسي کاملاً پيچيده مانند زبان C است. تفاوت ديگر آنها اينست که جاوااسکريپت توسط يک برنامه مفسر يعني interpreter  در مرورگر تعريف و تفسير شده تا قابل اجرا باشد و حتماً هم اين کار در مرورگر انجام مي شود اما برنامه هاي جاوا بايد توسط يک کامپايلر Compiler ، کامپايل شده که کامپايل شدن يعني جمع آوري اطلاعات مورد نظر و ترجمه آن اطلاعات به زبان قابل فهم براي کامپيوتر و تبديل آن به يک برنامه کاربردي واحد و مستقل براي کاربر را گويند. به همين دليل برنامه هاي جاوا را که اپلت applet مي نامند، مستقل اجرا مي شوند. البته اپلتهاي جاوا را مي توان در صفحات وب هم گنجاند.

در يک جمله مي توان گفت که جاوااسکريپت فقط در صفحات وب تأثيرگذار است اما زبان جاوا براي خلق برنامه هاي پيچيده در کامپيوتر ساخته شده است.

 

قابليتهاي جاوااسکريپت

اکنون که يک مفهومي از زبان جاوااسکريپت را در ذهن داريد، بايد ببينيم که با آن چکار مي توانيم انجام دهيم يا بهتر بگويم که جاوااسکريپت چه کاري براي ما انجام مي دهد و چه قابليتهايي را در مرورگر ايجاد مي کند.

در حقيقت جاوااسکريپت يک ابزار براي طراحان وب و نويسندگان کدهاي HTML مي باشد. جاوااسکريپت داراي ترکيباتي ساده نسبت به زبانهاي برنامه نويسي است که براحتي مي توان آنها را داخل کدهاي اچ تي ام ال يک صفحه قرار داد و از آنها استفاده کرد. يکي از قابليتهاي ويژه جاوااسکريپت رايگان بودن آن است که اگر شما زبان HTML را بدانيد، مي توانيد با کمي دانستن جاوااسکريپت کدهاي آماده که بيش از 2000 نوع از آنها در وب وجود دارد را در صفحات خود بکار گيريد.

با استفاده از اين زبان مي توانيد متنهاي پويا و متحرک در صفحات و در نقاط مختلف مرورگرها مانند نوار وضعيت آنها خلق کنيد. يکي ديگر از قابليتهاي اين زبان عکس العمل نشان دادن به وقايع و اتفاقات مي باشد بطور مثال واکنش نسبت به کليک يکي از دکمه هاي موس يا فشردن يک کليد بر روي کيبورد و يا انجام عملي هنگام بسته شدن صفحه مرورگر.

جاوااسکريپت حتي مي تواند کدهاي اچ تي ام ال را بخواند و يا توليد کند که توسط اين خاصيت مي توانيد در هر زمان خاص يک متني را توليد يا تغيير دهيد و يا در زماني مشخص عکسي را جايگزين عکسي ديگر کنيد.

يکي از بهترين ويژگيهاي جاوااسکريپت، اعتبار بخشيدن به اطلاعات مي باشد مثلاً شما يک فرمي براي ارتباط با کاربر خود ساخته ايد و مي خواهيد قبل از اينکه آن اطلاعات به سرور فرستاده شود، بازبيني شده تا اگر مشکلي وجود داشته باشد به کاربر اطلاع داده شود تا در صدد رفع آن برآيد. چون جاوااسکريپت اصطلاحاً Client side است، يعني در سيستم کاربر اجرا شده و مستقل از وب سرور است مي تواند ترافيک روي سرور را کم کرده که اين موضوع يک امتياز مثبت براي ميزبانان وب محسوب مي شود.

 

آغازاسکريپت نويسی

 

تگ اسکريپ

جاوااسکريپت هم مانند زبان HTML از يکسري دستور و گرامر خاص خود پيروي مي کند. البته اين زبان به سادگي اچ تي ام ال نيست و بسيار هم حساس است، مثلاً در اچ تي ام ال فاصله بين تگها اهميتي ندارد و مرورگر آنرا ناديده مي گيرد اما در جاوااسکريپت فاصله بايد متناسب باشد که اگر رعايت نشود با پيغام خطا روبرو خواهيد شد. در قسمت بعد با چگونگي پيغامهاي خطا در جاوااسکريپت آشنا مي شويد. همانگونه که اطلاع داريد کدهاي جاوااسکريپت را بايد در ميان تگهاي HTML قرار دهيد. به همين دليل يک تگ براي آن در نظر گرفته شده است:

که کليه دستورات جاوااسکريپت بايد مابين آنها قرار گيرد. اين تگهاي اچ تي ام ال به مرورگر مي فهمانند که در کجا اين زبان آغاز شده تا مفسر جاوااسکريپت مرورگر فعال شود و در کجا پايان مي پذيرد که برنامه مفسر هم کار خود را خاتمه دهد.

 

language

اما تگ script مانند بقيه تگها داراي خصوصياتي مي باشد، يکي از آنها language است که مقدار آنرا بايد برابر با javascript قرار دهيد،

براي مقدار javascript مي توانيد نسخه آن را هم بنويسيد. اين زبان هم مانند اچ تي ام ال داراي نسخه هاي مختلفي است که هر کدام آنها با قابليتهاي جديدي در وب توسعه يافتند. نسخه هاي اين زبان عبارتند از 1.0 ، 1.1 ، 1.2 ، 1.3 ، 1.4 و آخرين نسخه حال حاضر هم 1.5 مي باشد که هم اکنون اين نسخه با مرورگر مايکروسافت يعني اينترنت اکسپلورر سازگاري ندارد. فعلاً مرورگر اينترنت اکسپلورر از نسخه 1.3 اين زبان پشتيباني مي کند.

 

type

تگ اسکريپت خصوصيت type هم دارد که براي اين زبان بايد آنرا برابر با text/javascript قرار دهيد. نکته قابل توجه اينست که اگر اين خصوصيت را به اين تگ اضافه کنيد، مرورگر اينترنت اکسپلورر نسخه 1.5 اين زبان را ناديده مي گيرد و کد را اجرا مي کند. شما مي توانيد با اجراي کد زير هم اولين اسکريپت خود را تجربه کنيد و هم خصوصيت type را در IE امتحان کنيد.

خب مانند زبان اچ تي ام ال مي توانيد از يک ويرايشگر متن مانند برنامه Notepad استفاده کرده و کد زير را در آن وارد کنيد:



My JavaScript




اجراي اين کد

اکنون اين فايل را با پسوند htm ذخيره کنيد و سپس آنرا در مرورگر اينترنت اکسپلورر اجرا کنيد که جمله Hello my friends را بايد در صفحه ببينيد. حالا خصوصيت type را حذف کنيد و دوباره فايل را ذخيره و مشاهده کنيد، هيچ متني در صفحه ديده نميشود که با تغيير نسخه 1.5 به 1.3 آن متن دوباره نمايان خواهد شد. نوشتن نسخه جاوااسکريپت اجباري نيست يعني مي توانيد آنرا ننويسيد.

حالا ببينيم که چه اتفاقي هنگام اجراي اين کد مي افتد. تگ اسکريپت و خصوصيات آن روشن است اما به عبارت زير دقت کنيد:

document.write(" Hello my friends ")

ببينيم در اينجا اين عبارت چگونه براي مرورگر تفسير مي شود. document يعني همان سند و فايل html که در آن اين عمليات بايد انجام شود و مرورگر به محض برخورد با اين عبارت آماده مي شود براي انجام کاري که بعد از يک نقطه نوشته مي شود. در اينجا بايد عمل write يعني نوشتن را انجام دهد اما چي بايد بنويسد، طبق قرارداد بايد هر چيزي که در بين پرانتز هست را بنويسد و چون محتواي داخل پرانتز مابين دو علامت نقل قول يعني " " قرار گرفته پس بايد بصورت يک string در بيايند. string يعني يک رشته کاراکتر که مي تواند هم حرف باشد هم عدد و هم علامت و خاصيت string در اين است که هرچيزي مابين دو علامت " " قرار گرفت عيناً بايد در صفحه نوشته شود.

در جاوااسکريپت به document يک object يعني شئ مي گويند و هنگامي که يک نقطه بعد از آن گذاشته مي شود آن شئ منتظر method خود مي شود که در اينجا همان write است. به عبارت ساده اين خط مي گويد که آن شئ را بردار و در آن توسط متد نوشتن چيزي بنويس.

ساده بود، نه؟ بقيه دستورات هم به همين راحتي است فقط بايد آنها را بنويسيد و تمرين کنيد تا در ذهنتان بمانند.

 

 

src

 تگ script يک خصوصيت ديگر هم دارد که src است و با آن آشنا هستيد، بله همانطور که حدس زديد براي آدرس دهي است. کدهاي جاوااسکريپت را هم مانند استايل شيت مي توانيد در يک فايل جداگانه نوشته و با پسوند js ذخيره کنيد سپس با خصوصيت src آدرس آن فايل را مشخص کنيد. توجه داشته باشيد که در آن فايل نبايد ديگر تگ script را بنويسيد. معمولاً در اين حالت تگ اسکريپت در قسمت head گنجانده مي شود تا با شروع صفحه فايل جاوااسکريپت فراخواني شود.




همانطور که گفته شد، جاوااسکريپت خيلي حساس بوده و از کوچکترين اشتباهي نخواهد گذشت.

پيغامهاي خطا در جاوااسکريپت

چگونگي دريافت پيغام خطا

يکي از مواردي که در نوشتن کدهاي جاوااسکريپت ممکن است زياد با آن برخورد کنيد، دريافت پيغام هاي خطا هنگام اجراي کدها در مرورگر مي باشد، پس بهتر است در همين ابتداي کار با آنها آشنا شويد تا هنگام مشاهده خطا، تجربه کافي براي رفع آن داشته باشيد. خطاهاي جاوااسکريپت را به دو صورت متوجه مي شويد يکي ظاهر شدن مثلثي زرد با يک علامت تعجب در سمت چپ نوار وضعيت مرورگر مانند شکل زير:

triangular sign in the lower left hand corner

در بعضي از مرورگرها اين نوار مشاهده نمي شود که مي توانيد براي مشاهده آن به منوي View مرورگر رفته و روي گزينه Status Bar کليک کنيد. حالت ديگر ديدن پيغامهاي خطا، باز شدن يک پنجره در وسط مرورگر است که در اين حالت جزئيات خطاي ايجاد شده را هم مي توانيد مشاهده کنيد. مانند شکل زير:

Error message window

توجه داشته باشيد، در نسخه هاي جديد مرورگر اينترنت اکسپلورر اين پنجره مشاهده نميشود و ابتدا آنرا بايد فعال کنيد. براي فعال کردن آن به منوي Tools مرورگر رفته و گزينه Internet Options را انتخاب کنيد، در پنجره باز شده به قسمت Advanced رفته و گزينه Display a notification about script error را تيک بزنيد، سپس دکمه Ok را زده تا کار شما تأييد شود. بهتر است که قبل از شروع کد نويسي جاوااسکريپت اين عمل را انجام دهيد تا هنگام بروز خطا در صدد رفع آن برآييد که به اين کار اشکال زدايي يا Debugging مي گويند. اگر هم اين گزينه را فعال نکرديد، هنگام بروز خطا مي توانيد بر روي آن مثلث زرد رنگ در نوار وضعيت رفته و دوبار کليک کنيد که همان پنجره اعلان خطا باز خواهد شد.

 

انواع خطاها

اساساً دو نوع خطا براي جاوااسکريپت وجود دارد، خطاهاي نحوي يا  Syntax errors  و خطاهاي زمان اجرا يا  Run time errors که در خطاهاي نحوي يک مشکلي در ترکيبات کدها بوجود آمده مثلاً يک غلط املائي در يک دستور يا جا انداختن يک حروف يا علامت  و در خطاهاي زمان اجرا احتمالاً يک دستور بطور اشتباه جاي يک دستور ديگر نوشته شده است که در هنگام اجراي کد، مفسر مرورگر نمي تواند اين دستور را تجزيه تحليل کند وخطا را اعلام مي کند.

 

ايجاد يک خطا

خب حالا اجازه دهيد تا اين پيغامها را تجربه کنيم و ببينيد که به چه راحتي توسط آنها مي توانيد اشکال زدايي کرده و کد خود را به سرعت اصلاح کنيد. ممکن است که دهها بار با پيغام خطا روبرو شويد ولي نااميد نشويد چون حرفه اي ها هم بارها و بارها با آن مواجه مي شوند. حالا کد زير را با نام error.htm ذخيره کنيد:



Error message




اجراي کد

يکبار آنرا اجرا کنيد و نتيجه را مشاهده کنيد. حالا پرانتز دوم راحذف مي کنيم، بدين صورت:

document.write("I'm ready for first error message.";

سپس فايل را دوباره ذخيره کرده و اجرا مي کنيم. همانطور که انتظار داشتيم پنجره پيغام خطا باز شد، اگر جزئيات پيغام را نداريد روي دکمه Details يا Show Details کليک کنيد تا ببينيم که چه اطلاعاتي را مي توانيم بدست آوريم. در کادر جزئيات اولين گزينه Line مي باشد که اگر مطابق کد بالا عمل کرده باشيد بايد درجلوي آن عدد 7 نوشته شده باشد. اين خط به ما مي فهماند که ايراد در خط هفتم سورس کد است. دقت کنيد، تنها خطهاي مربوط به جاوااسکريپت را نبايد بخوانيد بلکه کليه خطوط از بالا به پايين خوانده مي شود، حتي خطهاي خالي هم بايد شمرده شوند.

دومين گزينه، کلمه Char است که بيانگر عدد شمارش شده کاراکتري که باعث بروز خطا شده است و در اينجا آن عدد 52 مي باشد. فراموش نکنيد که هر فاصله بين کلمات هم يک کاراکتر به حساب ميايد. شايد اينجا سؤالي برايتان پيش بيايد که چرا عدد 52 ؟ در صورتي که در اينجا پرانتز کاراکتر51 است. بايد يک نکته را خدمتتان عرض کنم که علامت ; در جاوااسکريپت يک کاراکتر اختياري است که نشان دهنده پايان يک خط از کد مي باشد و برنامه نويسان بر حسب عادتي که دارند از اين علامت استفاده مي کنند ، در اينجا مفسر جاوااسکريپت آنرا به عنوان يک کاراکتر قبل از کاراکتر اصلي خطا شناسايي کرده است.

گزينه بعدي Code ميباشد که ظاهراً بطور معمول عدد صفر جلوي آن ميباشد و هنوز نتوانستم کارآيي آنرا تشخيص بدهم و گزينه آخر هم URL است که آدرس فايل اچ تي ام ال است که در آن خطا توليد شده است.

در مجموع شما براي اشکال زدايي به سه گزينه اول نياز داريد که با توجه به آنها بلافاصله مي توانيد محل بروز اشکال را تشخيص دهيد. يک نکته را به خاطر بسپاريد که در کدهاي طولاني ممکن است با تعداد خطاهاي زيادي برخورد کنيد که در بيشتر مواقع برطرف کردن اولين خطا باعث رفع کليه اشکالات مي شود.

به عنوان جمله آخر اين قسمت، هميشه به پنجره هاي اعلان خطا با ديد مثبت نگاه کنيد چون آنها به ما کمک مي کنند تا اشکال را براحتي پيدا کنيم.

متغيرها در جاوااسکريپت

متغير چيست؟

متغيرها يکي از مباحث مهم در جاوااسکريپت هستند چون کاربرد زيادي در اين زبان دارند. متغيرها يا Variables مانند يک ظرف و مخزن براي ذخيره سازي اطلاعات هستند که اين اطلاعات مي تواند يک کلمه يا جمله ، عدد و يا حتي يک شئ باشد. متغيرها، کد نويسي را راحت تر کرده و نظم خاصي به اسکريپت ما مي بخشند. بطور مثال ما يک متن را مي خواهيم در چند نقطه از کد وارد کنيم که بجاي آن مي توانيم از يک کلمه کوتاه که اين متن در آن ذخيره شده استفاده کنيم تا از تکرار جلوگيري کرده و اسکريپت هم شلوغ نشود. به مثال زير توجه کنيد تا وظيفه يک متغير را ببينيد:

اجراي کد

حالا مي پردازيم به جزئيات تعريف يک متغير در اين اسکريپت:

var strTest = "This is an example for variable."

اصطلاح var از کلمه variable مي آيد که نوشتن آن اختياري مي باشد، يعني مي توانيد يک متغير را بدون نوشتن آن هم تعريف کنيد ولي اگر مي خواهيد کد شما خوانا تر باشد بهتر است که از var استفاده کنيد. قسمت بعدي يعني strTest نامي است که شما براي آن متغير انتخاب مي کنيد و سپس علامت مساوي است که متغير را برابر با يک مقدار قرار مي دهد و در آخر هم مقدار تعيين شده براي متغير که در اينجا يک رشته متني است يا يک text string  ميباشد که به همين دليل بايد آنرا بين دو علامت " " قرار دهيم تا عيناً محتويات آن در مرورگر نوشته شود.

 

انتخاب نام متغير

بهتر است نام يک متغير را طوري انتخاب کنيد که در عين سادگي، گويا بوده و يادآور نکاتي براي شما باشد چون هميشه کدهاي شما به چند خط ختم نميشود، گاهي اوقات ممکن است مجبور شويد بيش از صد خط کد در يک صفحه قرار دهيد. بطور مثال چون مقدار متغيردر اينجا يک رشته يعني string بود من سه حرف str را به ابتداي نام متغير اضافه کردم.

 اما براي انتخاب نام متغير بايد نکات زير را رعايت کنيد:

 

انواع متغيرها

دو نوع متغير وجود دارد که تفاوت اين دو مدل در محل استفاده از آنها مي باشد. متغيرهاي کلي و سراسري که به آنها global گفته مي شود. اين متغيرها در سراسر يک فايل اچ تي ام ال کاربرد دارند يعني يکبار آنرا در ابتداي اسکريپت تعريف و مقدار دهي مي کنيد ولي در هر کجا از کد که مورد نياز باشد از آنها بهره مي گيريد. نوع ديگر آن متغيرهاي محلي يا local هستند که فقط در يک قسمت از اسکريپت کارآيي دارند که ممکن است در قسمت ديگري همان متغير با يک مقدار ديگري تعريف شود. معمولاً متغير هاي محلي در توابع يا function ها کاربرد دارند که يک متغير در هر تابع مي تواند مقادير متفاوت داشته باشد بدون اينکه پيغام خطايي توليد کند که در قسمت مورد نظر function ها را ياد خواهيد گرفت.

به قسمتي از اسکريپت که يک متغير در آن کاربرد دارد، حوضه يا scope آن متغير گفته مي شود.

دستورات شرطی if...else

يکي از مهمترين قابليت هاي زبان جاوااسکريپت، توانايي آن در انجام دادن عکس العملهاي متفاوت در شرايط مختلف است. بر اين اساس اين زبان قادر است که متغيرهاي مختلف را با هم مقايسه کند و شرطهايي را براي آنها تعيين کند تا به يک نتيجه دلخواه برسد.

 

دستور if

اغلب اوقات هنگام نوشتن يک اسکريپت، شما نياز داريد که تصميم هاي متفاوتي در مقابل نتايج مختلف بگيريد. بطور مثال ميخواهيد هنگاميکه يک کاربر وارد سايت شما مي شود اگر ساعت قبل از 10 صبح بود يک متن در بالاي صفحه ظاهر شود و به کاربر صبح بخير بگويد. در اينجا دستور if به کمک ما مي آيد. اين دستور يکي از مهمترين دستور در کد نويسي است چون توسط آن مي توانيم شرط تعيين کنيم که اگر اينطور شد، نتيجه اين باشد. اين دستور هميشه دو قسمت دارد: يکي قسمت شرط و ديگري قسمت نتيجه شرط است. به کد زير توجه کنيد:

حالا ببينيم که چه اتفاقي افتاده است، در خط سوم ما يک متغير بنام d  تعريف کرديم که به آن شئ Date را نسبت داديم و در خط بعد از آن يک متغير ديگر که يکي از متدهاي آن شئ را مقدار دهي کرديم تا ساعت سيستم براي ما ذخيره شود، سپس با يک خط خالي قسمت شرط را جدا کرديم تا به خوانايي اسکريپت کمک کنيم. کلمه if را مي نويسيم، دقت کنيد که شرط را حتماً داخل پرانتز بايد نوشت و در آن هم همانطور که مشاهده مي کنيد از عملگر کوچکتر استفاده کرديم. در اينجا ساعت سيستم در متغير t ذخيره شده است و دستور if داره شرط کوچکتر بودن را بررسي مي کند. در خط بعدي هم علامت آکلاد { } را بکار برديم که در اينجا آنرا براي نظم و خوانايي بيشتر کد استفاده کرديم اما فراموش نکنيد که اين دستور ممکن است از چندين قسمت تشکيل شود که در آنصورت بکار بردن آکلاد لازم است تا بتوانيم هر قسمت را از هم جدا کنيم. در آخر هم دستور تايپ يک متن مناسب در صفحه را به عنوان نتيجه شرط نوشتيم.

اجراي کد

دستور if...else

در مثال بالا درستي يک شرط بررسي شد و يک نتيجه هم در بر داشت، اما حالا مي خواهيم در صورتي که شرط درست نبود هم يک نتيجه در بر داشته باشد، پس ما به يک قسمت ديگر در اين دستور نياز داريم که در حالت جديد مثال ما به اين صورت خواهد بود: اگر ساعت قبل يا برابر 10 بود پس جمله صبح بخير نمايش داده شود در غير اينصورت متن سلام دوستان ظاهر شود. در کد بجاي قسمت در غير اينصورت مي توانيم کلمه else را وارد کنيم تا به مفهوم مورد نظر برسيم.

if ( t < 10 || t == 10 ) {
document.write ( " Good morning " )
}
else
{
document.write ( " Hello friends ")
}

اجراي کد

دستور if...else if...else

اين دستور را زماني مي توانيد استفاده کنيد که بخواهيد يک شرط در شرايط مختلف بررسي شود تا نتيجه هاي متفاوت هم بدست بيايد:

if ( t <= 10  ) {
document.write ( " Good morning " )
}
else if ( t > 10 && t < 13 ) {
document.write ( " Hello friends " )
}
else if ( t >= 13 && t < 18 ) {
document.write ( " Good afternoon " )
}
else {
document.write ( " Good evening " )
}

اجراي کد

آرايه چيست؟

آرايه يکي ديگر از دستورات جاوااسکريپت مي باشد که همانند بقيه دستورها يک وظيفه اي دارد و بهترين خاصيت اين دستور، کوتاه کردن اسکريپت ما است. شئ آرايه يا همان Array براي ذخيره کردن مقادير متفاوت در يک متغير بکار مي رود. همانطور که مي دانيد تا قبل از شناخت اين دستور براي هر متغير يک مقدار مشخص در نظر گرفته مي شد، اما توسط يک آرايه شما مي توانيد چندين مقدار را به يک متغير نسبت دهيد. بطور مثال مي توانيد اسامي روزهاي هفته را در يک متغير ذخيره کنيد. دستور آرايه داراي قسمتهايي است که با توجه به مثال زير به توضيح آنها مي پردازيم:

var weekdays = new Array(7)
weekdays[0] = "Shanbeh"
weekdays[1] = "Yekshanbeh"
weekdays[2] = "Doshanbeh"
weekdays[3] = "Seshanbeh"
weekdays[4] = "Chaharshanbeh"
weekdays[5] = "Panjshanbeh"
weekdays[6] = "Jomeh"

اول از همه يک متغير بنام weekdays تعريف کرديم و آنرا برابر با آرايه جديد قرار داديم، دستور آرايه را بايد با new Array شروع کنيد که به طرز نوشتن حروف بايد توجه کنيد، سپس پرانتزي باز کرده و تعداد مقادير را در آن مي نويسيم. به اين عدد داخل پرانتز index يا انديس مي گويند. انديس ها از صفر شروع مي شوند.

در خطوط بعد، نوبت به مقداردهي هر انديس مي رسد که متغير را مي نويسيم و هر انديس را بايد در کروشه [ ] بگذاريم و سپس آنها را برابر با يک مقدار قرار دهيم که اين مقادير هر چيزي مي توانند باشند مانند رشته هاي متني و يا اعداد.

مثال بالا را مي توان بصورت زير هم نوشت:

var weekdays = new Array ("Shanbeh","Yekshanbeh",...)

يعني بجاي نوشتن انديس کلي در پرانتز، مقادير هر انديس را بنويسيم و توسط کاما آنها را از هم جدا کنيم.

حالا مي خواهيم هنگام باز شدن صفحه وب، روزهاي هفته به ترتيب نمايش داده شوند. بعد از اينکه مقادير را در آرايه تعريف کرديم سپس بهترين دستوري که به ما در اينجا کمک مي کند يک حلقه است تا دستور چاپ کردن در صفحه را تکرار کند تا به آخرين روز هفته برسيم:

for ( i=0; i<7; i++ ) {
document.write ( weekdays[ i ] + "
" )
}

اجراي کد


آرايه ها

خصوصيت آرايه

آرايه هم داراي خصوصيت و متدهايي است که شما در صورت لزوم مي توانيد آنها را بکار بريد. براي تعريف کردن يک خصوصيت براي آرايه کافيست که بعد از متغير تعريف شده در آرايه،  يک نقطه بگذاريد و سپس آن خصوصيت را بنويسيد.

خصوصيتي که بيشترين کاربرد را براي آرايه دارد، length مي باشد. وظيفه اين خصوصيت نمايش انديس کلي يک آرايه است. اگر بخواهيم در مثال بالا اين خصوصيت را بکار بريم، بايد خط زير را بعد يا قبل از حلقه for بکار بريم:

document.write ( weekdays.length + "
" )

بعد از وارد کردن اين کد و اجراي اسکريپت، عدد هفت در صفحه نوشته خواهد شد چون انديس ما در اينجا هفت بود.

متدهاي آرايه

آرايه داراي متدهايي هم هست که نحوه تعريف کردن آنها همانند خصوصيت است و تنها فرقي که دارد بعد از نوشتن متد بايد پرانتز هم بگذاريد. متدهاي آرايه عبارتند از:

concat(), join(), pop(), shift(), push(), unshift(), reverse(), slice(), sort(), splice(), toString(), valueOf()

متد concat براي ترکيب مقادير دو يا سه آرايه بکار مي رود. اين متد هيچ چيزي را در آرايه ها تغيير نمي دهد و فقط مقادير تعريف شده را در صفحه چاپ مي کند. مثال

متد join  تقريباً مانند متد قبلي عمل مي کند و کليه مقادير را بصورت يک رشته متني در صفحه نشان مي دهد با اين تفاوت که در اين متد مي توانيد يک علامت مانند نقطه، تعيين کنيد تا بين مقادير چاپ شده در صفحه قرار گيرد. بصورت پيش فرض اين علامت، کاما مي باشد. مثال

متد pop آخرين مقدار آرايه را جدا کرده و در صفحه نمايش مي دهد. دقت کنيد که اين متد در خصوصيت length تأثير مي گذارد يعني اگر بعد از اين متد خصوصيت length را بکار بريد، يک انديس کمتر نشان مي دهد. مثال

متد shift برعکس متد قبلي است يعني اين متد اولين مقدار آرايه را جدا مي کند و نشان مي دهد. مثال

متد push يک يا چند مقدار را به آخر يک آرايه اضافه مي کند و انديس جديد برمي گرداند. مثال

متد unshift يک يا چند مقدار به ابتداي يک آرايه اضافه مي کند و انديس جديد بر مي گرداند. دقت کنيد که اين متد در مرورگر اينترنت اکسپلورر بدرستي کار نمي کند. مثال

متد reverse ترتيب نمايش مقادير يک آرايه را برعکس کرده و در صفحه وب نمايش مي دهد. مثال

متد slice يکسري از مقادير موجود در يک آرايه را جدا مي کند که در اين متد شماره انديس مقداري که مي خواهيد از آنجا جداسازي شروع شود را بايد بنويسيد و همچنين مي توانيد آخرين مقدار هم مشخص کنيد که اگر آنرا معين نکنيد تا آخرين مقدار انتخاب خواهد شد. مثال

متد sort براي منظم کردن مقادير يک آرايه به ترتيب حروف الفباي انگليسي است. اگر هم مقادير يک آرايه، عدد باشند به ترتيب اعداد تنظيم خواهند شد که مفسر جاوااسکريپت به اولين عدد از سمت چپ نگاه مي کند و بعد از رديف کردن آنها سپس به اعداد بعدي نگاه مي کند. مثال

متد splice براي اضافه يا حذف يک مقدار در آرايه مي باشد که اين متد داراي پارامترهايي مي باشد که اين پارامترها را بايد در پرانتز مشخص کنيد. اولين پارامتر شماره انديس که در آنجا يک مقدار حذف يا اضافه خواهد شد و بايد عدد باشد. دومين پارامتر مقدار عددي است که معين مي کند چند تا مقدار از آن انديسي که در پارامتر قبل انتخاب کرديم، بايد حذف شود که اگر آنرا صفر در نظر بگيريد هيچ مقداري حذف نخواهد شد. اين دو پارامتر حتماً بايد نوشته شوند. در ضمن اگر مي خواهيد مقاديري هم اضافه شود بعد از اين پارامتر ها به عنوان پارامترهاي بعدي ذکر مي کنيد. مثال

متد toString مقادير يک آرايه را تبديل به يک رشته متني مي کند. مثال

 

اينها متدهايي هستند که کاربردشان در آرايه ها متداول است. شايد بنظرتان غير مفيد بيايند اما در بعضي جاها مي توانند به کمک شما بيايند و اسکريپت شما را خلاصه تر کنند.

شئ ها در جاوااسکريپت

شئ جاوااسکريپت چيست؟


وظيفه شئ ها را مي توان شبيه به متغير ها دانست اما شئ ها بسيار کامل تر از متغيرها هستند چون آنها مي توانند اطلاعات بيشتري را در خود ذخيره کنند و همچنين تفاوت ديگري هم که با متغيرها دارند اينست که متغيرها بايد تعريف شوند تا جاوااسکريپت آنها را بشناسد اما بعضي از شئ ها در جاوااسکريپت ساخته و تعريف شده اند. اين شئ هاي از قبل تعريف شده را درون ساخت يا Built-in مي گويند مانند شئ Date . البته همانطور که ميدانيد بايد همين اشياء هم در ابتداي کد يکبار ديگر با دستور new تعريف شوند:


mydate = new Date ( )
name = new Array ( )


پس فراموش نکنيد که از اين دستور براي شروع يک object استفاده کنيد.


کليه شئ ها داراي خصوصيات و متدهاي شناخته شده براي جاوااسکريپت هستند که آنها را با گذاشتن يک نقطه بعد از خود شئ بکار مي بريم و مي توانيم مقادير مختلفي را براي آنها در نظر بگيريم.


انواع اشياء


به غير از شئ هاي درون ساخت Date و Array که در صفحات قبل با آنها آشنا شديد، شئ هاي درون ساخت ديگر جاوااسکريپت عبارتند از شئ String و Math و شئ هايي که مربوط به HTML DOM  مي شوند. در بخش هاي بعدي به ترتيب به توضيح هر کدام از اين اشياء خواهيم پرداخت.


دستور with


در اين دستور شما مي توانيد يک شئ را به همراه خصوصيات و متدهايش بصورت پيش فرض در اسکريپت خود تعريف کنيد. اين دستور به نوعي کد شما را راحت تر و خلاصه تر مي کند و مانند توابع فقط اسم تعيين شده را در کدها بکار مي بريد که جاوااسکريپت کليه خصوصيات و متدهاي آنرا برايش در نظر خواهد گرفت. قالب دستور with به شکل زير است:


with ( name ) {
  .... javascript code ....
}


روش ساخت يک شئ


در بالا صحبت از يک سري اشياء شد که جاوااسکريپت از قبل با آنها آشناست اما گاهي اوقات نياز هست که يک شئ را خودتان تعريف کنيد تا بهتر بتوانيد اسکريپت خود را مديريت کنيد. البته توسط دستور with هم مي توانيد اينکار را انجام دهيد، به اين صورت که اسم شئ مورد نظر را بجاي name در الگوي بالا بنويسيد و خصوصيت و متد آنرا در خطوط بعدي بين { } تعريف کنيد.

اما اگر بخواهيد يک شئ را در اسکريپت خود بسازيد نياز به دو چيز داريد، ابتدا يک تابع سازنده که به آن Constructor مي گويند و در آن نوع شئ تعيين مي شود، سپس به نمونه شئ که از آن تابع استفاده مي کند و به آن Instance  مي گويند که توسط دستور new تعريف مي شود. اين مطلب ممکن است کمي گيج کننده باشد اما به مثال زير توجه کنيد تا کاملاً به ساخت شئ توسط خودتان تسلط پيدا کنيد.

مي خواهيم يک شئ براي اتومبيل تعريف کنيم که خصوصياتي مانند اسم، رنگ و مدل را داشته باشد. براي اينکار ابتدا يک تابع بايد تعريف کنيم بنام car و خصوصيات آنرا به عنوان پارامترهايش در پرانتز بنويسيم و سپس اين پارامترها را بر اساس خصوصياتش مقداردهي مي کنيم:

function Car ( name, model, color ) {
this.name = name
this.model = model
this.color = color
}

به عبارت this دقت کنيد، اين يک دستور جاوااسکريپت است و به شئ که در حال تعريف آن هستيم، اشاره دارد و در حقيقت به مفسر جاوااسکريپت مي فهماند که اين خصوصيت شئ تعريف شده با اين مقدار است و شما بايد از اين دستور استفاده کنيد تا خصوصيت يک شئ را برايش تعريف کنيد و مقدار آنها را هم مانند بالا مشخص کنيد.


حالا بايد يک شئ جديد براي آن بسازيد که اين شئ جديد را در متغيري بنام mycar ذخيره مي کنيم:


mycar = new Car ( "Corvette", "Z06", "Red" )


اين خط کد به جاوااسکريپت مي فهماند که يک شئ بنام mycar داراي خصوصيات اسم که Corvette و مدل Z06 و رنگ Red مي باشد. شما مي توانيد هر شئ ديگر که بخواهيد با دستور new بسازيد:


thecar = new Car ( "BMW", "Z4", "Silver" )


الان مي خواهيم از شئ اول اسم ماشين و از شئ دوم رنگ را در صفحه چاپ کنيم:


document.write ( mycar.name + "
" )

document.write ( thecar.color )


اجراي کد

بعد از اينکه خصوصياتي براي يک شئ تعريف کرديد حالا نوبت به متدهاي شئ ساخته شده، مي رسد. در اينجا متدي که تعريف مي کنيم براي کليه ماشينها مي توانيم بکار بريم. الگوي کلي يک متد به شرح زير است:

object.methodname( ) = function_name

object شئ است که ساختيم، methodname نام متدي است که شما در نظر مي گيريد و function name هم اسم تابعي که بايد بسازيد. سپس هر کجا که لازم بود از متد استفاده کنيد ابتدا شئ و سپس با گذاشتن يک نقطه متد را به همراه پرانتز مي نويسيد که اگر اين متد پارامتري هم داشت بايد آنرا داخل پرانتز معين کنيد.

متدي که مي خواهيم براي شئ Car بسازيم را بايد ابتدا بصورت يک تابع تعريف کنيم:

function displaycar ( ) {
var result = " I like " + this.name + " " +  this.model + " with " + this.color + " color."
document.write ( result )
}

ح

نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:





مطالب قبلي





Copyright © 2009-20010 Loxblog.com All Rights Reserved . Designed by Loxblog.com

yasiamoozesh

محمد امین سلیمی و محمد یاسین رضایی

yasiamoozesh

http://yasiamoozesh.loxblog.com

آموزش نرم افزارها ومطالب مهم

آموزش جاوا اسکريپ

آموزش نرم افزارها ومطالب مهم

به وبلاگ من خوش آمدید

آموزش نرم افزارها ومطالب مهم